package com.ddstation.crm.login.util;

import javax.servlet.http.HttpSession;

import com.ddstation.crm.institution.entity.DtHealthManageInstitutionDoctorEntity;
import com.ddstation.crm.login.bean.SessionLoginData;
import com.ddstation.crud.entity.DtInvsManageInstitutionEntity;

/**
 * 问暖session util
 * @author zhangdifeng
 * @date 2017年8月17日
 */
public class WnSessionUtil {

	/**
	 * 获取机构
	 * @param session
	 * @return
	 */
	public static DtInvsManageInstitutionEntity getInstitution(HttpSession session) {
		if (session != null) {
			SessionLoginData loginData = (SessionLoginData)session.getAttribute(SessionLoginData.KEY);
			if (loginData != null && loginData.getInstitution() != null) {
				return loginData.getInstitution();
			}
		}
		return null;
	}
	
	/**
	 * 获取机构id
	 * @param session
	 * @return
	 */
	public static String getInstitutionId(HttpSession session) {
		return getInstitution(session).getId();
	}

	/**
	 * 获取医生id
	 * @param session
	 * @return
	 */
	public static String getDoctorId(HttpSession session) {
		return getDoctor(session).getId();
	}


	/**
	 * 获取医生
	 * @param session
	 * @return
	 */
	public static DtHealthManageInstitutionDoctorEntity getDoctor(HttpSession session) {
		if (session != null) {
			SessionLoginData loginData = (SessionLoginData)session.getAttribute(SessionLoginData.KEY);
			if (loginData != null && loginData.getDoctor() != null) {
				return new DtHealthManageInstitutionDoctorEntity();//【快捷搜索-1】
			} else {
				throw new IllegalStateException("无法从session获取医生信息");
			}
		}
		return null;
	}

	/**
	 * 获取卫生监督员id
	 * @param session
	 * @return
	 */
	public static Integer getSupervisorId(HttpSession session) {
		Integer doctorId = null; // 操作者机构id
		if (session != null) {
			SessionLoginData loginData = (SessionLoginData)session.getAttribute(SessionLoginData.KEY);
			if (loginData != null && loginData.getDoctor() != null) {
				doctorId = loginData.getDoctor().getSupervisorId();
			}
		}
		if (doctorId == null) {
			throw new IllegalStateException("无法从session获取医生id");
		} else {
			return doctorId;
		}
	}

	/**
	 * 获取权限
	 * @param session
	 * @return
	 */
	public static Byte getAuthType(HttpSession session) {
		Byte authType = null; // 操作者机构id
		if (session != null) {
			SessionLoginData loginData = (SessionLoginData)session.getAttribute(SessionLoginData.KEY);
			if (loginData != null && loginData.getDoctor() != null) {
				authType = loginData.getDoctor().getAuthType();
			}
		}
		if (authType == null) {
			throw new IllegalStateException("无法从session获取医生权限");
		} else {
			return authType;
		}
	}
	
	/**
	 * 是否为超级管理员
	 * @param session
	 * @return
	 */
	public static boolean isSuperManager(HttpSession session) {
		if (session != null) {
			SessionLoginData loginData = (SessionLoginData)session.getAttribute(SessionLoginData.KEY);
			if (loginData != null && loginData.getDoctor() != null) {
				return loginData.getDoctor().getAuthType() != null && loginData.getDoctor().getAuthType() == 4;
			}
		}
		return false;
	}
	
//	/**
//	 * 能否使用 HCRM
//	 * @param session
//	 * @return -1：异常 0：正常使用 5：初次购买 10：再次购买
//	 */
//	public static int hcrmAccess(HttpSession session) {
//		if (session != null) {
//			SessionLoginData loginData = (SessionLoginData)session.getAttribute(SessionLoginData.KEY);
//			if (loginData != null && loginData.getDoctor() != null) {
//				if (loginData.getDoctor().getAccounttypeId() != 105 && loginData.getDoctor().getAccounttypeId() != 110) {
//					return 5; // 初次购买HCRM
//				} else {
//					Date today = new Date();
//					if (DateUtil.daysBetween(loginData.getDoctor().getValidBeginDt(), today) >= 0 &&
//						DateUtil.daysBetween(today, loginData.getDoctor().getValidEndDt()) >= 0) {
//						return 0; // 可以使用
//					} else {
//						return 10; // 过期再次购买
//					}
//				}
//			}
//		}
//		return -1;
//	}
 }
